package tedu.week03.io;

import java.io.*;
import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * <pre>
 *    File类及相关操作.
 *      File:文件和目录路径名的抽象表示形式。
 *
 * </pre>
 *
 * @author : resty
 * @date : 2019年08月07日    10时
 **/
public class FileDemo {
    public static void main(String[] args) throws IOException {
        File file = new File("resty.primary/src/main/resources/test.txt");
        if (!file.exists()){//文件是否存在
            file.createNewFile();
        }

/**RandomAccessFile*/
//        RandomAccessFile raf = new RandomAccessFile(file,"r");//读取的操作
        RandomAccessFile raf = new RandomAccessFile(file,"rw");//写入的操作
        //读取第二个
        /*String name = null;
        int age = 0;
        byte bs[] = new byte[8];//声明一个byte数组.
        raf.skipBytes(12);//从0开始跳过12个字节

        for (int i = 0; i < bs.length; i++) {
            bs[i]=raf.readByte();
        }
        name = new String(bs);
        age = raf.readInt();
        System.out.println("第二个人的信息是 name:"+name+"\tage: "+age);

        raf.seek(0);//跳转到第1个信息位置
        for (int i = 0; i < bs.length; i++) {
            bs[i]=raf.readByte();
        }
        name = new String(bs);
        age = raf.readInt();
        System.out.println("第一个人的信息是 name:"+name+"\tage: "+age);


        raf.skipBytes(12);//从第二个信息位置跳转12个byte
        for (int i = 0; i < bs.length; i++) {
            bs[i]=raf.readByte();
        }
        name = new String(bs);
        age = raf.readInt();
        System.out.println("第三个人的信息是 name:"+name+"\tage: "+age);
//        System.out.println("第三个人的信息是 name:"+name1+"\tage: "+age);
        raf.close();*/




        /**完成写入的操作*//*
        String name = "zhangsan";
        int age = 30;

        raf.writeBytes(name);
        raf.writeInt(age);
        name = "lisi    ";
        age = 31;
        raf.writeBytes(name);
        raf.writeInt(age);

        name = "wangwu  ";

        age=32;
        raf.writeBytes(name);
        raf.writeInt(age);
        raf.close();*/





/**File*/



//        file.renameTo(new File("resty.primary/src/main/resources/test1.txt"));


//        file.setReadOnly();
//        file.setReadable(false);
//        file.setWritable(true);
//        file.setExecutable(false);
//        InputStream ism = new FileInputStream(file);
//
//        OutputStream osm = new FileOutputStream(file);

//        System.out.println(file.length());
//        List list = Arrays.asList(file.getParentFile().list());
//        for (int i = 0; i < list.size(); i++) {
//            System.out.println(list.get(i));
//
//        }
//        List list1 = Arrays.asList(file.getParentFile().listFiles());
//        for (int i = 0; i < list1.size(); i++) {
//            System.out.println(list1.get(i));
//        }



//        System.out.println(file.isAbsolute());//测试此抽象路径名是否为绝对路径名。
//        System.out.println(file.isDirectory());//测试此抽象路径名表示的文件是否是一个目录。
//        System.out.println(file.isHidden());//是否是隐藏文件
//        System.out.println(file.lastModified());
//        Date date = new Date(1565147643392L);
//        System.out.println(date);

//        System.out.println(file.canExecute());//检测文件是否可以操作
//        System.out.println(file.getAbsoluteFile());//返回绝对路径
//        System.out.println(file.getAbsolutePath());//返回绝对路径的字符串表述形式
//        System.out.println(file.getName());//返回文件名
//        System.out.println(file.getParentFile());//返回抽象父路径
//        System.out.println(file.getParent());//返回抽象父路径字符串
//        System.out.println(file.getPath());//获取文件路径字符串
//        System.out.println(file.getFreeSpace());//返回分区中未分配的字节数
//        System.out.println(file.delete());//删除文件
//        file.deleteOnExit();


//        String str = "您好";


        /*System.out.println(File.separator);
        System.out.println(File.pathSeparator);
        System.out.println(File.separatorChar);
        System.out.println(File.pathSeparatorChar);*/

    }
}
